DEFINITION MODULE VOutput;

(*
VDI Output Functions.

UK __DATE__ __TIME__
*)

(*DEF_SWITCHES*)

FROM PORTAB IMPORT UNSIGNEDWORD,ANYWORD,ANYBYTE;

IMPORT VDI,VAttribute;

TYPE XY = VDI.XY;

(* [V]DI: [P]oly[Line] *****************************************************)

PROCEDURE VPLine(    Handle: UNSIGNEDWORD;
                     Count : UNSIGNEDWORD;
                 VAR PXY   : ARRAY OF XY);

(* [V]DI: [P]oly[Marker] ***************************************************)

PROCEDURE VPMarker(    Handle: UNSIGNEDWORD;
                       Count : UNSIGNEDWORD;
                   VAR PXY   : ARRAY OF XY);

(* [V]DI: [G]raphics [Text] ************************************************)

PROCEDURE VGText(    Handle: UNSIGNEDWORD;
                     X     : XY;
                     Y     : XY;
                 VAR Text  : ARRAY OF CHAR);

(* [V]DI: [E]xtended Graphics [Text] ***************************************)

PROCEDURE VEText(    Handle : UNSIGNEDWORD;
                     X      : XY;
                     Y      : XY;
                 VAR Text   : ARRAY OF CHAR;
                 VAR Offsets: ARRAY OF XY);

(* [V]DI: [Fill]ed [Area] **************************************************)

PROCEDURE VFillArea(    Handle: UNSIGNEDWORD;
                        Count : UNSIGNEDWORD;
                    VAR PXY   : ARRAY OF XY);

(* [V]DI: [Cell] [Array] ***************************************************)

TYPE WritingModes = VAttribute.WritingModes;

PROCEDURE VCellArray(    Handle   : UNSIGNEDWORD;
                     VAR PXY      : ARRAY OF XY;
                         RowLength: UNSIGNEDWORD;
                         ElUsed   : UNSIGNEDWORD;
                         NumRows  : UNSIGNEDWORD;
                         WrtMode  : WritingModes;
                     VAR ColArray : ARRAY OF ANYWORD);

(* [V]DI: [Contour] [Fill] *************************************************)

PROCEDURE VContourFill(Handle: UNSIGNEDWORD;
                       X     : XY;
                       Y     : XY;
                       Index : UNSIGNEDWORD);

(* [V]DI: [F]il[l] [Rec]tangle *********************************************)

PROCEDURE VRRecFl(    Handle: UNSIGNEDWORD;
                  VAR PXY   : ARRAY OF XY);

(* [V]DI: [Bar] ************************************************************)

PROCEDURE VBar(    Handle: UNSIGNEDWORD;
               VAR PXY   : ARRAY OF XY);

(* [V]DI: [Arc] ************************************************************)

PROCEDURE VArc(Handle: UNSIGNEDWORD;
               X     : XY;
               Y     : XY;
               Radius: UNSIGNEDWORD;
               BegAng: UNSIGNEDWORD;
               EndAng: UNSIGNEDWORD);

(* [V]DI: [Pie] ************************************************************)

PROCEDURE VPie(Handle: UNSIGNEDWORD;
               X     : XY;
               Y     : XY;
               Radius: UNSIGNEDWORD;
               BegAng: UNSIGNEDWORD;
               EndAng: UNSIGNEDWORD);

(* [V]DI: [Circle] *********************************************************)

PROCEDURE VCircle(Handle: UNSIGNEDWORD;
                  X     : XY;
                  Y     : XY;
                  Radius: UNSIGNEDWORD);

(* [V]DI: [Ellipse] ********************************************************)

PROCEDURE VEllipse(Handle : UNSIGNEDWORD;
                   X      : XY;
                   Y      : XY;
                   XRadius: UNSIGNEDWORD;
                   YRadius: UNSIGNEDWORD);

(* [V]DI: [Ell]iptical [Arc] ***********************************************)

PROCEDURE VEllArc(Handle : UNSIGNEDWORD;
                  X      : XY;
                  Y      : XY;
                  XRadius: UNSIGNEDWORD;
                  YRadius: UNSIGNEDWORD;
                  BegAng : UNSIGNEDWORD;
                  EndAng : UNSIGNEDWORD);

(* [V]DI: [Ell]iptical [Pie] ***********************************************)

PROCEDURE VEllPie(Handle : UNSIGNEDWORD;
                  X      : XY;
                  Y      : XY;
                  XRadius: UNSIGNEDWORD;
                  YRadius: UNSIGNEDWORD;
                  BegAng : UNSIGNEDWORD;
                  EndAng : UNSIGNEDWORD);

(* [V]DI: [R]ounded [Box] **************************************************)

PROCEDURE VRBox(    Handle: UNSIGNEDWORD;
                VAR PXY   : ARRAY OF XY);

(* [V]DI: [F]illed [R]ounded [Box] *****************************************)

PROCEDURE VRFBox(    Handle: UNSIGNEDWORD;
                 VAR PXY   : ARRAY OF XY);

(* [V]DI: [Justified] Graphics Text ****************************************)

PROCEDURE VJustified(    Handle    : UNSIGNEDWORD;
                         X         : XY;
                         Y         : XY;
                     VAR Text      : ARRAY OF CHAR;
                         TextLength: UNSIGNEDWORD;
                         WordSpace : BOOLEAN;
                         CharSpace : BOOLEAN;
                         CharInfo  : BOOLEAN;
                     VAR CharWidth : ARRAY OF UNSIGNEDWORD);
(* [V]DI: Output [Bez]ier **************************************************)

PROCEDURE VBez(    Handle  : UNSIGNEDWORD;
                   Count   : UNSIGNEDWORD;
               VAR PXY     : ARRAY OF XY;
               VAR BezArray: ARRAY OF ANYBYTE;
               VAR Extent  : ARRAY OF XY;
               VAR NPoints : UNSIGNEDWORD;
               VAR NMove   : UNSIGNEDWORD);

(* [V]DI: Output [Filled] [Bez]ier *****************************************)

PROCEDURE VBezFill(    Handle  : UNSIGNEDWORD;
                       Count   : UNSIGNEDWORD;
                   VAR PXY     : ARRAY OF XY;
                   VAR BezArray: ARRAY OF ANYBYTE;
                   VAR Extent  : ARRAY OF XY;
                   VAR NPoints : UNSIGNEDWORD;
                   VAR NMove   : UNSIGNEDWORD);

(* [V]DI: Outline [F]ont [Text] ********************************************)

PROCEDURE VFText(    Handle: UNSIGNEDWORD;
                     X     : XY;
                     Y     : XY;
                 VAR Text  : ARRAY OF CHAR);

(* [V]DI: Outline [F]ont [Text] With [Offset] Vectors **********************)

PROCEDURE VFTextOffset(    Handle: UNSIGNEDWORD;
                           X     : XY;
                           Y     : XY;
                       VAR Text  : ARRAY OF CHAR;
                       VAR Offset: ARRAY OF XY);

END VOutput.
